import cv2
import numpy as np
import pyautogui
import time

# 定义红色的HSV范围（低值和高值）
lower_red = np.array([0, 50, 50])  # HSV下红色的低阈值
upper_red = np.array([10, 255, 255])  # HSV下红色的高阈值


def captrue(imageArea):
    # 获取屏幕截图
    screenshot = pyautogui.screenshot()
    screenshot = np.array(screenshot)
    screenshot = cv2.cvtColor(screenshot, cv2.COLOR_RGB2BGR)
    # 左上角落为坐标原点
    y = imageArea.sp.y
    x = imageArea.sp.x
    h = imageArea.ep.y - y
    w = imageArea.ep.x - x

    # 截取指定区域（ROI）
    roi = screenshot[y:y + h, x:x + w]

    # 将截图从BGR转换为HSV颜色空间
    hsv_screenshot = cv2.cvtColor(roi, cv2.COLOR_BGR2HSV)

    # 创建掩膜，检测红色区域
    mask = cv2.inRange(hsv_screenshot, lower_red, upper_red)

    # 查找掩膜中的轮廓（如果存在红色区域）
    contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 如果找到红色区域，则绘制轮廓
    if contours:
        for contour in contours:
            area = cv2.contourArea(contour)
            if area > 500:  # 根据需要设置一个面积阈值，避免噪点
                x, y, w, h = cv2.boundingRect(contour)
                cv2.rectangle(roi, (x, y), (x + w, y + h), (0, 255, 0), 2)
    return roi
